home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / scheme / schmrprt / r399rs.lha / intro.tex < prev    next >
Encoding:
Text File  |  1989-08-31  |  7.6 KB  |  156 lines

  1. \clearextrapart{Introduction}
  2.  
  3. \label{historysection}
  4.  
  5. Programming languages should be designed not by piling feature on top of
  6. feature, but by removing the weaknesses and restrictions that make additional
  7. features appear necessary.  Scheme demonstrates that a very small number
  8. of rules for forming expressions, with no restrictions on how they are
  9. composed, suffice to form a practical and efficient programming language
  10. that is flexible enough to support most of the major programming
  11. paradigms in use today.
  12.  
  13. %Scheme has influenced the evolution of Lisp.
  14. Scheme
  15. was one of the first programming languages to incorporate first class
  16. procedures as in the lambda calculus, thereby proving the usefulness of
  17. static scope rules and block structure in a dynamically typed language.
  18. Scheme was the first major dialect of Lisp to distinguish procedures
  19. from lambda expressions and symbols, to use a single lexical
  20. environment for all variables, and to evaluate the operator position
  21. of a procedure call in the same way as an operand position.  By relying
  22. entirely on procedure calls to express iteration, Scheme emphasized the
  23. fact that tail-recursive procedure calls are essentially goto's that
  24. pass arguments.  Scheme was the first widely used programming language to
  25. embrace first class escape procedures, from which all known
  26. sequential control structures can be synthesized.  More recently, building
  27. upon the design of generic arithmetic in Common Lisp, Scheme introduced
  28. the concept of exact and inexact numbers.
  29. % A few
  30. %of these innovations have recently been incorporated into Common Lisp, while
  31. %others remain to be adopted.
  32.  
  33. \todo{Ramsdell:
  34. I would like to make a few comments on presentation.  The most
  35. important comment is about section organization.  Newspaper writers
  36. spend most of their time writing the first three paragraphs of any
  37. article.  This part of the article is often the only part read by
  38. readers, and is important in enticing readers to continue.  In the
  39. same way, The first page is most likely to be the only page read by
  40. many SIGPLAN readers.  If I had my choice of what I would ask them to
  41. read, it would be the material in section 1.1, the Semantics section
  42. that notes that scheme is lexically scoped, tail recursive, weakly
  43. typed, ... etc.  I would expand on the discussion on continutations,
  44. as they represent one important difference between Scheme and other
  45. languages.  The introduction, with its history of scheme, its history
  46. of scheme reports and meetings, and acknowledgements giving names of
  47. people that the reader will not likely know, is not that one page I
  48. would like all to read.  I suggest moving the history to the back of
  49. the report, and use the first couple of pages to convince the reader
  50. that the language documented in this report is worth studying.
  51. }
  52.  
  53. \subsection*{Background}
  54.  
  55. \vest The first description of Scheme was written in
  56. 1975~\cite{Scheme75}.  A revised report~\cite{Scheme78}
  57. \todo{italicize or not?} appeared in 1978, which described the evolution
  58. of the language as its MIT implementation was upgraded to support an
  59. innovative compiler~\cite{Rabbit}.  Three distinct projects began in
  60. 1981 and 1982 to use variants of Scheme for courses at MIT, Yale, and
  61. Indiana University~\cite{Rees82,MITScheme,Scheme311}.  An introductory
  62. computer science textbook using Scheme was published in
  63. 1984~\cite{SICP}.
  64.  
  65. %\vest As might be expected of a language used primarily for education and
  66. %research, Scheme has always evolved rapidly.  This was no problem when
  67. %Scheme was used only within MIT, but 
  68. \vest As Scheme became more widespread,
  69. local dialects began to diverge until students and researchers
  70. occasionally found it difficult to understand code written at other
  71. sites.
  72. Fifteen representatives of the major implementations of Scheme therefore
  73. met in October 1984 to work toward a better and more widely accepted
  74. standard for Scheme.
  75. %Participating in this workshop were Hal Abelson, Norman Adams, David
  76. %Bartley, Gary Brooks, William Clinger, Daniel Friedman, Robert Halstead,
  77. %Chris Hanson, Christopher Haynes, Eugene Kohlbecker, Don Oxley, Jonathan Rees,
  78. %Guillermo Rozas, Gerald Jay Sussman, and Mitchell Wand.  Kent Pitman
  79. %made valuable contributions to the agenda for the workshop but was
  80. %unable to attend the sessions.
  81. %
  82. %Subsequent electronic mail discussions and committee work completed the
  83. %definition of the language.
  84. %Gerry Sussman drafted the section on numbers, Chris Hanson drafted the
  85. %sections on characters and strings, and Gary Brooks and William Clinger
  86. %drafted the sections on input and output.
  87. %William Clinger recorded the decisions of the workshop and
  88. %compiled the pieces into a coherent document.
  89. %The ``Revised revised report on Scheme''~\cite{RRRS}
  90. Their report~\cite{RRRS}
  91. was published at MIT and Indiana University in the summer of 1985.
  92. Another round of revision took place in the spring of 1986~\cite{R3RS}.
  93. %, again accomplished
  94. %almost entirely by electronic mail, resulted in the present report.
  95. The present report reflects further revisions agreed upon in a meeting
  96. that preceded the 1988 ACM Conference on Lisp and Functional Programming
  97. and in subsequent electronic mail.
  98.  
  99. %\vest The number 3 in the title is part of the title, not a reference to
  100. %a footnote.  The word ``revised'' is raised to the third power because
  101. %the report is a revision of a report that was already twice revised.
  102.  
  103. \todo{Write an editors' note?}
  104.  
  105.  
  106. \medskip
  107.  
  108. We intend this report to belong to the entire Scheme community, and so
  109. we grant permission to copy it in whole or in part without fee.  In
  110. particular, we encourage implementors of Scheme to use this report as
  111. a starting point for manuals and other documentation, modifying it as
  112. necessary.
  113.  
  114.  
  115.  
  116.  
  117. \subsection*{Acknowledgements}
  118.  
  119. We would like to thank the following people for their help: Alan Bawden, Michael
  120. Blair, George Carrette, Andy Cromarty, Pavel Curtis, Jeff Dalton, Olivier Danvy,
  121. Ken Dickey, Andy Freeman, Richard Gabriel, Yekta G\"ursel, Ken Haase, Robert
  122. Hieb, Paul Hudak,
  123. Richard Kelsey, Morry Katz, Chris Lindblad, Mark Meyer, Jim Miller, Jim Philbin,
  124. John Ramsdell, Mike Shaff, Jonathan Shapiro, Julie Sussman,
  125. Perry Wagle, Daniel Weise, and Henry Wu.  We thank Carol Fessenden, Daniel
  126. Friedman, and Christopher Haynes for permission to use text from the Scheme 311
  127. version 4 reference manual.  We thank Texas Instruments, Inc.~for permission to
  128. use text from the {\em TI Scheme Language Reference Manual.} We gladly
  129. acknowledge the influence of manuals for MIT Scheme, T, Scheme 84,
  130. Common Lisp, and Algol 60.
  131.  
  132. \vest We also thank Betty Dexter for the extreme effort she put into
  133. setting this report in \TeX, and Donald Knuth for designing the program
  134. that caused her troubles.
  135.  
  136. \vest The Artificial Intelligence Laboratory of the
  137. Massachusetts Institute of Technology, the Computer Science
  138. Department of Indiana University, and the Computer and Information
  139. Sciences Department of the University of Oregon supported the
  140. preparation of this report.  Support for the MIT work was provided in part by
  141. the Advanced Research Projects Agency of the Department of Defense under Office
  142. of Naval Research contract N00014-80-C-0505.  Support for the Indiana
  143. University work was provided by NSF grants NCS 83-04567 and NCS
  144. 83-03325.
  145.  
  146.  
  147. \todo{Steele:
  148.  
  149. [c] There should be a very clear message to the reader that Scheme certainly
  150. does owe debts to other sources, and one of them is Common Lisp.  While
  151. Scheme certainly has been the pioneer in the treatment of closures and
  152. functional programming in a Lisp framework, I think it is fair to say that
  153. Common lisp pioneered a rational (forgive the pun) treatment of numeric data
  154. types in a Lisp framework, and my impression is that Scheme learned
  155. something in this area from the Common Lisp experience.
  156. }